//package com.tzy.user.utils;
//import com.auth0.user.JWT;
//import com.auth0.user.JWTCreator;
//import com.auth0.user.algorithms.Algorithm;
//import com.auth0.user.interfaces.DecodedJWT;
//import com.auth0.user.interfaces.JWTVerifier;
//
//import java.util.Calendar;
//import java.util.Map;
//
//public class JsonWebTokenUtils {
//    // 签名密钥, 生产环境在配置文件里写
////    @Value("${token.}")
//    private static final String SECRET = "!Adjusted123$";
//    /**
//     * 过期时长, 以分钟为单位
//     */
//    private static final int EXPIRED_MINUTES = 240;
//    /**
//     * 生成token
//     * @param payload token携带的信息
//     * @return token字符串
//     */
//    public static String getToken(Map<String,String> payload){
//        // 指定token过期时间为7天
//        Calendar calendar = Calendar.getInstance();
////        calendar.add( Calendar.MINUTE, EXPIRED_MINUTES );
//        calendar.add( Calendar.MINUTE, 20 );
//
////        return JWT.create()
//        JWTCreator.Builder builder = JWT.create();
////        .withNotBefore(Date)
//        // 构建payload
//        payload.forEach((k,v) -> builder.withClaim(k,v));
//        // 指定过期时间和签名算法
//        String token = builder.withExpiresAt(calendar.getTime()).sign(Algorithm.HMAC256(SECRET));
//        return token;
//    }
//    /**
//     * 解析token
//     * @param token token字符串
//     * @return 解析后的token
//     */
//    public static DecodedJWT decode(String token){
//        JWTVerifier jwtVerifier = JWT.require(Algorithm.HMAC256(SECRET)).build();
//        DecodedJWT decodedJWT = jwtVerifier.verify(token);
//        return decodedJWT;
//    }
//
//
//    /**
//     * 校验
//     * @param token
//     * @return
//     */
//    private static DecodedJWT verify(String token) {
//        return
//    }
//    /**
//     * 从token里获取用户编号
//     * @param token
//     * @return
//     */
//    public static int getUserIdFromToken(String token){
//        DecodedJWT verify = verify(token);
//        return Integer.parseInt(verify);
//    }
//
////https://blog.csdn.net/weixin_45070175/article/details/118559272
//}
